//#include <iostream>
//#include <vector>
//#include <algorithm>
//#include <string>
//using namespace std;
//
//int main()
//{
//	int n;
//	cin >> n;
//
//	vector<pair<pair<string, string>, int>> vpp;
//	for (int i = 0; i < n; ++i)
//	{
//		string f, l;
//		cin >> f >> l;
//		vpp.push_back(make_pair(make_pair(f, l), 0));
//	}
//
//	for (int i = 0; i < n; ++i)
//	{
//		int tmp;
//		cin >> tmp;
//		vpp[tmp-1].second = i;
//	}
//
//	sort(vpp.begin(), vpp.end(), [](pair<pair<string, string>, int> left, pair<pair<string, string>, int> right) {return left.second < right.second; });
//
//	int i = 1;
//	bool byFirst = true;
//	bool byLast = true;
//	for (; i < n; ++i)
//	{
//		bool newFirst = false;
//		bool newLast = false;
//
//		if (byFirst && vpp[i].first.first >= vpp[i - 1].first.first
//			|| byLast && vpp[i].first.first >= vpp[i - 1].first.second)
//			newFirst = true;
//		else
//			newFirst = false;
//
//		if (byFirst && vpp[i].first.second >= vpp[i - 1].first.first
//			|| byLast && vpp[i].first.second >= vpp[i - 1].first.second)
//			newLast = true;
//		else
//			newLast = false;
//
//		byFirst = newFirst;
//		byLast = newLast;
//
//		if (!byFirst && !byLast)
//			break;
//	}
//
//	if (i < n)
//		cout << "NO" << endl;
//	else
//		cout << "YES" << endl;
//
//	return 0;
//}